As computers have become miniaturized and commoditized, manufacturers are producing more varied devices that include any number of embedded computers and processors. The computer in a computerized device can control the device's operation; collect, store, and share data; communicate with other computers and other computerized devices; and update its own software, among other things. The Internet of Things (IoT) is the network of computerized physical devices that have embedded processor(s), electronics, software, data, sensors, actuators, and/or network connectivity, which enable these devices to connect and exchange data via digital networks, including the Internet, cellular networks, and other wireless networks. Typically, each “thing” is uniquely identifiable through its embedded computing system, and is able to inter-operate within the existing Internet infrastructure. “Things”, in the IoT sense, can refer to a wide variety of computerized devices, such as consumer appliances, enterprise devices used in business and corporate settings, manufacturing machines, farming equipment, energy-consuming devices in homes and buildings (switches, power outlets, appliances, lighting systems, bulbs, televisions, garage door openers, sprinkler systems, security systems, etc.), medical and healthcare devices, infrastructure management devices, robots, drones, and transportation devices and vehicles, among many others.
In many examples, modern vehicles and transportation machinery (e.g., automobiles, trucks, aircraft, trains, watercraft, motorcycles, scooters, and the like) contain several embedded processors or embedded computers in their subsystems, and are computer-controlled in at least some aspects. Similarly, a growing number of modern transportation infrastructure devices (e.g., traffic lights, traffic cameras, traffic sensors, bridge monitors, bridge control systems, and the like) contain at least one, and often many, embedded processors or embedded computer systems, and are computer-controlled in at least some aspects. These computer-controlled elements of the transportation network typically communicate with each other, passing various types of information back and forth, and they may react, respond, change their operation, or otherwise depend upon and use the information received/sent from/to other vehicles in Vehicle-to-Vehicle (V2V; also known as Car-to-Car (C2C)) communications and/or from/to infrastructure elements in Vehicle-to-Infrastructure (V2I; also known as Car-to-Infrastructure (C2I)) communications for safe, correct, efficient, and reliable operation. Together, the V2V and V2I systems are commonly referred to as the V2X system or infrastructure.
The computers in computerized devices operate according to their software and/or firmware and data. In order to ensure safe and proper operation, the computerized devices must be properly initialized and updated with the proper software, firmware, executable instructions, digital certificates (e.g., public key certificates), cryptographic keys and the like (hereinafter collectively referred to as “digital assets” or “software”) as intended by the manufacturer, so that the IoT consists of devices that are executing authorized, known-to-be-good software and data. Problems arise, however, when unauthorized persons or organizations (e.g., hackers) replace or change the software in computerized devices. Problems also arise when older software, untested software, unapproved software, and/or software with known bugs is installed in computerized devices.
Conventional systems can require a significant allocation of hardware and other resources to process device update requests for “campaigns” that include a large number of devices, such as a campaign to update the software for all of the V2X-capable cars that are of a specific make, model, and year, and/or that have a specific digital asset (e.g., one of a specific set of certificates), which may amount to tens or hundreds of thousands of cars. For example, conventional systems processing device update requests for large campaigns require a large amount of memory, processors, network bandwidth, and the like in order to process all of the requests, which include requests from the set of devices that are part of the campaign (e.g., cars that are of a specific make, model, year, and/or certificate group) interspersed with requests from devices that are not part of the campaign (e.g., cars that are part of the V2X environment, but are not of the campaign's specific make, model, year, and/or certificate set). The campaigns, as referred to herein, can include device updates for a particular group of computerized devices, wherein the devices updates can include software updates, firmware updates, and the like.
Some conventional systems can use linear searches or binary searches to determine whether or not a computerized device should receive a device update as part of a campaign—for example, to determine whether a requesting car is in the specific set of make(s), model(s), year(s) and/or certificate(s) included in the campaign. However, linear searches and binary searches typically require storing a large amount of data and searching the data typically requires a substantial amount of processing time and power. Additionally, the amount of time required to complete each such search grows according to the number of devices (e.g., cars) in the campaign. Therefore, conventional systems can result in a significant delay or latency when determining whether a computerized device is included in a campaign for device updates, such as a delay of five seconds or more per device/request.
In some embodiments, the present techniques include improved systems, devices, and methods that can verify that a computerized device belongs to a campaign or group or set of computerized devices that are scheduled to receive device updates. In some implementations, the present techniques include a system that can reduce the hardware resources and time used to determine whether a computerized device is included in a campaign and retrieve a device update as part of the campaign.